package com.sxjh.uitl;

import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class LocalDateTimeUtil {

    public static boolean isCellDateFormatted(Cell cell) {
        return false;
    }

    /**
     * 获取当前时间,时间格式 yyyy-MM-ddTHH:mm:ss
     * @return LocalDateTime
     */
    public static LocalDateTime getTime() {
        return  LocalDateTime.ofInstant(Instant.ofEpochMilli(new Date().getTime()), ZoneOffset.ofHours(8));
    }

    /**
     * 获取当前时间戳(毫秒)
     * @return long
     */
    public static long getMillis() {
        return LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
    }

    /**
     * String 转成 LocalDateTime 时间格式"yyyy-MM-dd HH:mm:ss"
     * @param String str -- 转换的时间字符串
     * @param DateTimeFormatter format -- 转换的时间格式 (默认格式: yyyy-MM-dd HH:mm:ss)
     * @return LocalDateTime
     */
    public static LocalDateTime parseToLocalDateTime(String str, DateTimeFormatter format) {
        if (format == null) {
            format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        }
        return LocalDateTime.parse(str, format);
    }

    /**
     * LocalDateTime 转成 String
     * @param LocalDateTime time -- 转换的时间对象
     * @param String format -- 转换的时间格式 (默认格式: yyyy-MM-dd HH:mm:ss)
     * @return String
     */
    public static String parseToString(LocalDateTime time, String format) {
        if (StringUtils.isBlank(format)) {
            format = "yyyy-MM-dd HH:mm:ss";
        }
        return DateTimeFormatter.ofPattern(format).format(time);
    }

    /**
     * LocalDateTime 转成 LocalDate
     * @param LocalDateTime time -- 转换的时间对象
     * @param String format -- 转换的时间格式 (默认格式: yyyy-MM-dd HH:mm:ss)
     * @return LocalDate
     */
    public static LocalDate parseToLocalDate(LocalDateTime time, DateTimeFormatter format) {
        if (format == null) {
            format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        }
        String str = parseToString(time, null);
        return LocalDate.parse(str, format);
    }

    /**
     * @param time -- 转换的时间对象
     * @param pattern -- 转换的时间格式 (默认格式: yyyy-MM-dd)
     * @return String
     */
    public static String LocalDateToString(LocalDate time, DateTimeFormatter pattern) {
        if (pattern == null) pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        if (time == null) return null;
        return time.format(pattern);
    }

    public static LocalDateTime parseLocalDate(LocalDate time, DateTimeFormatter pattern) {
        if (pattern == null) pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String str = LocalDateToString(time, pattern);
        str = str + " 00:00:00";
        return parseToLocalDateTime(str, null);
    }
}
